package com.yt.claim.models.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yt.claim.models.dto.ClaimCreateDTO;
import com.yt.claim.models.dto.ClaimQueryDTO;
import com.yt.claim.models.dto.ClaimUpdateDTO;
import com.yt.claim.models.entity.ClaimInfoEntity;
import com.yt.claim.models.vo.ClaimVO;

public interface ClaimService {

    /**
     * 创建索赔申请
     *
     * @param dto 创建索赔申请参数
     * @return 索赔申请ID
     */
    Integer createClaim(ClaimCreateDTO dto);

    /**
     * 更新索赔信息
     *
     * @param dto 更新索赔信息参数
     * @return 是否更新成功
     */
    boolean updateClaim(ClaimUpdateDTO dto);

    /**
     * 根据 ID 查询索赔详情
     *
     * @param claimId 索赔ID
     * @return 索赔详情VO
     */
    ClaimVO queryClaimById(Integer claimId);

    /**
     * 分页查询索赔列表
     *
     * @param dto 查询条件
     * @param page 分页参数
     * @return 分页结果
     */
    IPage<ClaimVO> pageQueryClaims(ClaimQueryDTO dto, Page<ClaimVO> page);

    /**
     * 变更索赔状态
     *
     * @param claimId 索赔ID
     * @param statusAttrId 状态属性ID
     * @param operator 操作人
     * @return 是否变更成功
     */
    boolean changeStatus(Integer claimId, Integer statusAttrId, String operator);
}